In today's increasingly complex electronic systems, there may be multiple events to be sequenced. By way of nonlimiting example, an electronic system may have multiple power supplies to achieve the desired functionality. Frequently, such power supplies are to be turned ON and OFF in a predetermined order with specific time relationships (sequencing) for various reasons, such as preventing damage to the powered devices. Sometimes, the sequencing involves multiple electronic circuits located in physically different locations or sub-assemblies. Accordingly, to perform sequencing amongst multiple devices, there is electrical communication between the electronic circuits, thereby providing a proper sequencing.
Known approaches of coordinating events include time-based sequencing, where each sequencing controller is programmed to enable or disable an event at a specific time relative to a common “start” signal. An example of time-based sequencing is what Power Management Bus (PMBus) defines for sequencing power supplies ON and OFF. While a simple approach, time-based sequencing, does not by itself provide feedback or an ability to wait for an event to happen. Each sequencing controller waits for its prescribed time and then acts in isolation from any other sequencing controller.
A more advanced sequencing method uses a feedback signal to indicate when the next sequencing controller should start. Referring again to the power supplies example, the “power good” output of one power supply can be daisy-chained to a RUN pin of the next. Such a sequencing approach provides a fast sequencing time and the ability to automatically hold off sequencing of downstream events if an upstream event doesn't occur or has a problem. However, this daisy chain approach may not be sufficiently flexible since the sequencing order is typically hard wired.
Another known sequencing method uses a daisy chain approach that includes feedback, but uses a common signal to communicate sequencing order between sequencing controllers. For example, a serial bus signal is arbitrated among all the sequencing controllers. Each sequencing controller also has a counter. When one sequencing controller has completed sequencing, and is ready to allow the next one to go, the serial bus line is released. Upon determining that the serial bus line released, all the sequencing controllers that are coupled to the serial bus then pull down on the serial bus line signal, advancing each counter by 1. When the shared count matches a sequencing controller's preprogrammed position, it enables or disables the event associated therewith. Feedback may be provided in the form of the sequencing controller holding the serial bus line low until the enabled or disabled event has completed. This process repeats itself until all sequencing controllers have finished. This sequencing method provides flexibility to programmatically change the sequencing order, to achieve a fast sequencing time, and the ability to hold off sequencing (which may be indefinite). However, this method relies on all sequencing controllers to have synchronized counters, wherein the synchronization is challenging to verify.